<?php
/** @package    verysimple::Phreeze */

/**
 * IRenderEngine is an interface that can be implemented and passed
 * into Phreeze Controller constructor and will be used to
 * render views.
 *
 * @package verysimple::Phreeze
 * @author VerySimple Inc.
 * @copyright 1997-2010 VerySimple, Inc.
 * @license http://www.gnu.org/licenses/lgpl.html LGPL
 * @version 1.0
 */
interface IRenderEngine
{
    function __construct($templatePath = '', $compilePath = '');
    
    /**
     * Assigns a value which will be available to the view
     *
     * @param string $key
     * @param variant $value
     */
    public function assign($key, $value);
    
    /**
     * Renders and outputs the given template file to the browser
     *
     * @param string $template
     */
    public function display($template);
    
    /**
     * Renders and returns the given template file as a string
     *
     * @param string $template
     * @return string
     */
    public function fetch($template);
    
    /**
     * Unassign a value
     *
     * @param string $key
     */
    public function clear($key);
    
    /**
     * Clear all assigned variables
     */
    public function clearAll();
    
    /**
     * Return all assigned variables
     *
     * @return array
     */
    public function getAll();
}
